package bomberman.modelo.observadores;

import java.io.IOException;

import bomberman.modelo.Partida;
import bomberman.modelo.personajes.LopezReggae;
import bomberman.vista.Dimensionador;
import bomberman.vista.personajes.VistaLopezReggaeEste;
import bomberman.vista.personajes.VistaLopezReggaeNorte;
import bomberman.vista.personajes.VistaLopezReggaeOeste;
import bomberman.vista.personajes.VistaLopezReggaeSur;

public class ObservadorLopezReggae implements IObservador {
  
  private Partida partida;
  
  public ObservadorLopezReggae(Partida partida) {
    this.partida = partida;
  }
  
  @Override
  public void actualizar(Object arg) {
    try {
      if (!(this.partida.getGameLoop().getObjetosVivos().contains(arg))) {
        this.partida.agregarObjetoVivoYVista(arg, new VistaLopezReggaeSur(new Dimensionador((LopezReggae) arg)));
      } else {
        
        if (((LopezReggae) arg).getResistencia() == 0) {
          this.partida.retirarObjetoVivoYVista(arg);
        } else {
          switch (((LopezReggae) arg).getDireccion()) {
            case NORTE:
              this.partida.cambiarVista(arg, new VistaLopezReggaeNorte(new Dimensionador((LopezReggae) arg)));
            break;
            case SUR:
              this.partida.cambiarVista(arg, new VistaLopezReggaeSur(new Dimensionador((LopezReggae) arg)));
            break;
            case OESTE:
              this.partida.cambiarVista(arg, new VistaLopezReggaeOeste(new Dimensionador((LopezReggae) arg)));
            break;
            case ESTE:
              this.partida.cambiarVista(arg, new VistaLopezReggaeEste(new Dimensionador((LopezReggae) arg)));
            break;
          }
        }
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
  
}
